# mean (years)
mapping <- data %>% select(state,year,nfatal_r,fatal_r,pop,fatal,nfatal) %>% mutate(state=toupper(state))
map <- mapping %>% group_by(state) %>% summarise(fatal=round(mean(fatal),2),fatal_r_mean=round(mean(fatal_r),2))
## `summarise()` ungrouping output (override with `.groups` argument)
map$hover <- with(map, paste(state, '<br>', "fatal(mean)", fatal, "fatal ratio(mean)", fatal_r_mean))
# give state boundaries a white border
l <- list(color = toRGB("white"), width = 2)
# specify some map projection/options
g <- list(
scope = 'usa',
projection = list(type = 'albers usa'),
showlakes = TRUE,
lakecolor = toRGB('white')
)
fig <- plot_geo(map, locationmode = 'USA-states')
fig <- fig %>% add_trace(
z = ~fatal_r_mean, text=~hover,locations = ~state,
color = ~fatal_r_mean, colors = 'Purples'
)
fig <- fig %>% colorbar(title = "Number of vehicle fatalities")
fig <- fig %>% layout(
title = 'US Traffic Fatalities',
geo = g,
yaxis = list(type = "log")
)
fig
# by year
gg <- ggplot(mapping, aes(pop,fatal_r, color = state)) +
geom_point(aes(size = fatal_r, frame = year, ids = state)) +
scale_x_log10()
## Warning: Ignoring unknown aesthetics: frame, ids
ggplotly(gg)
data %>% group_by(state) %>% summarise(mean=mean(dry),min=min(dry),max=max(dry)) %>% arrange(desc(mean))
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 48 x 4
## state mean min max
## <fct> <dbl> <dbl> <dbl>
## 1 ky 42.2 39.1 45.8
## 2 ar 37.6 35.9 39.6
## 3 nc 26.2 25.6 27.6
## 4 al 23.8 23.0 25.0
## 5 ms 19.0 17.3 20.0
## 6 pa 10.8 10.7 11.0
## 7 oh 9.96 9.27 11.6
## 8 tx 8.16 6.83 11.3
## 9 il 5.56 4.46 6.40
## 10 me 3.37 3.29 3.57
## # … with 38 more rows
data %>% group_by(state) %>% summarise(count=n())
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 48 x 2
## state count
## <fct> <int>
## 1 al 7
## 2 az 7
## 3 ar 7
## 4 ca 7
## 5 co 7
## 6 ct 7
## 7 de 7
## 8 fl 7
## 9 ga 7
## 10 id 7
## # … with 38 more rows
library(AER)
library(plm)
##
## Attaching package: 'plm'
## The following objects are masked from 'package:dplyr':
##
## between, lead
library(stargazer)
##
## Please cite as:
## Hlavac, Marek (2018). stargazer: Well-Formatted Regression and Summary Statistics Tables.
## R package version 5.2.2. https://CRAN.R-project.org/package=stargazer
data %>% filter(state=="ar")
## state year fatal_r nfatal_r spirits unemp beertax drinkage dry breath
## 1 ar 1982 2.38405 0.4421329 1.19 9.8 0.6503580 21 36.7128 no
## 2 ar 1983 2.39570 0.3784948 1.20 10.1 0.6754587 21 36.4301 no
## 3 ar 1984 2.23785 0.3452683 1.22 8.9 0.5989011 21 36.1040 no
## 4 ar 1985 2.26367 0.3094530 1.12 8.7 0.5773305 21 35.9050 no
## 5 ar 1986 2.54323 0.4555039 0.92 8.7 0.5624355 21 39.5696 no
## 6 ar 1987 2.67588 0.4606366 1.01 8.1 0.5450000 21 39.2879 no
## 7 ar 1988 2.54697 0.3590810 0.99 7.7 0.5245429 21 39.2879 no
## jail service pop fatal nfatal
## 1 no no 2306998 550 102
## 2 no no 2324999 557 88
## 3 no no 2346002 525 81
## 4 no no 2359001 534 73
## 5 no no 2371000 603 108
## 6 no no 2388000 639 110
## 7 no no 2395003 610 86
data %>% select(state,year,fatal_r) %>% group_by(state) %>% summarise(mean=mean(fatal_r),sd=sd(fatal_r),max=max(fatal_r),min=min(fatal_r),range=max(fatal_r)-min(fatal_r)) %>% arrange(desc(sd)) %>% plot_ly(x=~mean, type = "histogram")# %>% plot_ly(x=~state,y=~mean)
## `summarise()` ungrouping output (override with `.groups` argument)
data %>% select(state,year,spirits) %>% group_by(state) %>% summarise(mean=mean(spirits),sd=sd(spirits),max=max(spirits),min=min(spirits),range=max(spirits)-min(spirits)) %>% arrange(desc(max)) %>% plot_ly(x=~mean, type = "histogram")# %>% plot_ly(x=~state,y=~mean)
## `summarise()` ungrouping output (override with `.groups` argument)
data %>% select(state,year,unemp) %>% group_by(state) %>% summarise(mean=mean(unemp),sd=sd(unemp),max=max(unemp),min=min(unemp),range=max(unemp)-min(unemp)) %>% arrange(desc(sd)) %>% plot_ly(x=~mean, type = "histogram")# %>% plot_ly(x=~state,y=~mean)
## `summarise()` ungrouping output (override with `.groups` argument)
data %>% select(state,year,beertax) %>% group_by(state) %>% summarise(mean=mean(beertax),sd=sd(beertax),max=max(beertax),min=min(beertax),range=max(beertax)-min(beertax)) %>% arrange(desc(mean)) %>% plot_ly(x=~mean, type = "histogram")# %>% plot_ly(x=~state,y=~mean)
## `summarise()` ungrouping output (override with `.groups` argument)
data %>% select(state,year,dry) %>% group_by(state) %>% summarise(mean=mean(dry),sd=sd(dry),max=max(dry),min=min(dry),range=max(dry)-min(dry)) %>% arrange(desc(mean)) %>% plot_ly(x=~range, type = "histogram")# %>% plot_ly(x=~state,y=~mean)
## `summarise()` ungrouping output (override with `.groups` argument)
year_breath <- data %>% select(state,year,breath) %>% pivot_wider(
names_from = year,
values_from = breath
) %>% as.data.frame()
year_jail <- data %>% select(state,year,jail) %>% pivot_wider(
names_from = year,
values_from = jail
) %>% as.data.frame()
library(readr)
library(fdapace)
library(tidyverse)
library(dplyr)
library(plyr)
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
##
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
## The following object is masked from 'package:purrr':
##
## compact
## The following objects are masked from 'package:plotly':
##
## arrange, mutate, rename, summarise
library(fda)
## Loading required package: splines
## Loading required package: Matrix
##
## Attaching package: 'Matrix'
## The following objects are masked from 'package:tidyr':
##
## expand, pack, unpack
## Loading required package: fds
## Loading required package: rainbow
## Loading required package: MASS
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
## The following object is masked from 'package:plotly':
##
## select
## Loading required package: pcaPP
## Loading required package: RCurl
##
## Attaching package: 'RCurl'
## The following object is masked from 'package:tidyr':
##
## complete
## The following object is masked from 'package:lmtest':
##
## reset
##
## Attaching package: 'fda'
## The following object is masked from 'package:graphics':
##
## matplot
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(ggplot2)
library(fdapace)
# original curves
smooth = data %>% dplyr::select(state, year, fatal_r) %>%
ddply(.(state), mutate, years = 1:length(fatal_r), count_smooth = Lwls1D(bw = 2,
kernel_type = 'epan',
xin = years,
yin = fatal_r,
xout = year))
local_linear <- smooth %>% dplyr::select(state,count_smooth,years) %>% pivot_wider(
names_from = state,
values_from = count_smooth,
values_fill = list(count_smooth = 0)
) %>% as.data.frame()%>% dplyr::select(-years)
# first-derivative
smooth_1 = data %>% dplyr::select(state, year, fatal_r) %>%
ddply(.(state), mutate, years = 1:length(fatal_r), count_smooth = Lwls1D(bw = 2,
kernel_type = 'epan',
xin = years,
yin = fatal_r,
xout = year,
nder = 1))
local_linear_1 <- smooth_1 %>% dplyr::select(state,count_smooth,years) %>% pivot_wider(
names_from = state,
values_from = count_smooth,
values_fill = list(count_smooth = 0)
) %>% as.data.frame()%>% dplyr::select(-years)
par(mfrow=c(1,2))
matplot(1:7,local_linear, type = "l", lty = 1, xlab='years', ylab= 'fatal_ratio (y)',main = list("Smoothed original curves", cex = 0.8, font = 4))
matplot(1:7,local_linear_1, type = "l", lty = 1, xlab='years', ylab= 'Dy',main = list("First derivative original curves", cex = 0.8, font = 4))
